% Remember to use the lgrind style

\Head{}
\File{./java/Editor.java}{2006}{4}{27}{19:09}{9836}
\L{\LB{\C{}/*}}
\L{\LB{_*_Editor.java}}
\L{\LB{_*}}
\L{\LB{_*_Created_on_September_14,_2005,_11:27_PM}}
\L{\LB{_*}}
\L{\LB{_*_To_change_this_template,_choose_Tools_\|_Options_and_locate_the_template_under}}
\L{\LB{_*_the_Source_Creation_and_Management_node._Right-click_the_template_and_choose}}
\L{\LB{_*_Open._You_can_then_make_changes_to_the_template_in_the_Source_Editor.}}
\L{\LB{_*/\CE{}}}
\L{\LB{\C{}//_\<applet_code={'}Editor{'}_width={'}200{'}_height={'}50{'}\>\</applet\>\CE{}}}
\L{\LB{}}
\L{\LB{\K{package}_\V{project01};}}
\L{\LB{}}
\L{\LB{\K{import}_\V{javax}.\V{swing}.*;}}
\L{\LB{\K{import}_\V{javax}.\V{swing}.\V{event}.*;}}
\L{\LB{\K{import}_\V{java}.\V{awt}.*;}}
\L{\LB{\K{import}_\V{java}.\V{awt}.\V{event}.*;}}
\L{\LB{\K{import}_\V{java}.\V{applet}.*;}}
\L{\LB{\K{import}_\V{java}.\V{util}.*;}}
\L{\LB{\C{}//import_com.bruceeckel.swing.*;\CE{}}}
\L{\LB{\C{}//import_java.io.*;\CE{}}}
\L{\LB{}}
\L{\LB{}}
\L{\LB{\C{}/**}}
\L{\LB{_*_Sets_up_the_environment_and_runs_the_Map_Data_Editor_program;}}
\L{\LB{_*_contains_listener_methods_that_work_with_the_\{\CE{}\V{link}_\V{MapComponent}\}.}}
\L{\LB{_*_}}
\L{\LB{_*_\C{}author_Ian_Melnick}}
\L{\LB{_*/\CE{}}}
\L{\LB{\K{public}_\K{class}_\V{Editor}_\K{extends}_\V{Main}_\{}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{\K{private}_\V{JButton}_\V{bLoad},_\V{bSave};}}
\L{\LB{}\Tab{4}{\K{private}_\V{JSlider}_\V{sPanX},_\V{sPanY};}}
\L{\LB{}\Tab{4}{\K{private}_\V{JPanel}_\V{bottom},_\V{bottomL},_\V{bottomC},_\V{bottomR};}}
\L{\LB{}\Tab{4}{\K{private}_\V{JLabel}_\V{status},_\V{message};}}
\L{\LB{}\Tab{4}{\K{private}_\V{MapComponent}_\V{imc};}}
\L{\LB{}\Tab{4}{}}
\index{Editor}\Proc{Editor}\L{\LB{}\Tab{4}{\K{public}_\V{Editor}(\V{Args}_\V{a})_\{}}
\L{\LB{}\Tab{8}{\C{}//a}\Tab{18}{=_Utility.getArgs(args,_this);\CE{}}}
\L{\LB{}\Tab{8}{\K{this}.\V{a}}\Tab{16}{=_\V{a};}}
\L{\LB{}\Tab{8}{}}
\L{\LB{}\Tab{8}{\V{bLoad}}\Tab{16}{=_\K{new}_\V{JButton}(\S{}\3Load\3\SE{});}}
\L{\LB{}\Tab{8}{\V{bSave}}\Tab{16}{=_\K{new}_\V{JButton}(\S{}\3Save\3\SE{});}}
\L{\LB{}\Tab{8}{\V{imc}}\Tab{16}{=_\K{new}_\V{MapComponent}(\V{a}.\V{map});}}
\L{\LB{}\Tab{8}{\V{imc}.\V{initMap}(\K{true});}}
\L{\LB{}\Tab{8}{\V{sPanX}}\Tab{16}{=_\K{new}_\V{JSlider}(\V{JSlider}.\V{HORIZONTAL},_\-(\K{int})\V{imc}.\V{getMapSize}().\V{getWidth}(),_\N{0},_(\K{int})\V{imc}.\V{getCoordinates}().\V{getX}());}}
\L{\LB{}\Tab{8}{\V{sPanY}}\Tab{16}{=_\K{new}_\V{JSlider}(\V{JSlider}.\V{VERTICAL},_\-(\K{int})\V{imc}.\V{getMapSize}().\V{getHeight}(),_\N{0},_(\K{int})\V{imc}.\V{getCoordinates}().\V{getY}());}}
\L{\LB{}\Tab{8}{\V{bottom}}\Tab{16}{=_\K{new}_\V{JPanel}(\K{new}_\V{GridLayout}(\N{1},\N{3}));}}
\L{\LB{}\Tab{8}{\V{bottomL}_=_\K{new}_\V{JPanel}(\K{new}_\V{FlowLayout}());}}
\L{\LB{}\Tab{8}{\V{bottomC}_=_\K{new}_\V{JPanel}(\K{new}_\V{FlowLayout}());}}
\L{\LB{}\Tab{8}{\V{bottomR}_=_\K{new}_\V{JPanel}(\K{new}_\V{FlowLayout}());}}
\L{\LB{}\Tab{8}{\V{status}}\Tab{16}{=_\K{new}_\V{JLabel}(\S{}\3_\3\SE{});}}
\L{\LB{}\Tab{8}{\V{message}_=_\K{new}_\V{JLabel}(\S{}\3_\3\SE{});}}
\L{\LB{}\Tab{4}{\}}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{\C{}/**}}
\L{\LB{}\Tab{5}{*_Listener_methods_for_mouse_actions_}}
\L{\LB{}\Tab{5}{*/\CE{}}}
\L{\LB{}\Tab{4}{\K{private}_\K{class}_\V{MouseMethods}_\K{extends}_\V{MouseInputAdapter}_\K{implements}_\V{MouseWheelListener}_\{}}
\L{\LB{}\Tab{8}{\K{private}_\V{Point}_\V{mouseClickPoint},_\V{mouseReleasePoint},_\V{newNode};}}
\L{\LB{}\Tab{8}{\K{private}_\K{boolean}_\V{mouseDragged},_\V{scrollDirection};}\Tab{68}{\C{}//_scroll_direction_=_false,_use_y,_true_use_x\CE{}}}
\index{mouseMoved}\Proc{mouseMoved}\L{\LB{}\Tab{8}{\K{public}_\K{void}_\V{mouseMoved}(\V{MouseEvent}_\V{e})_\{}}
\L{\LB{}\Tab{12}{\V{status}.\V{setText}(\S{}\3map:_\3\SE{}_+_\V{a}.\V{map}_+_\S{}\3}\Tab{52}{dc:_(\3\SE{}_+_}}
\L{\LB{}\Tab{20}{(\K{int})\V{e}.\V{getPoint}().\V{getX}()+\S{}\3,\3\SE{}+(\K{int})\V{e}.\V{getPoint}().\V{getY}()_+}}
\L{\LB{}\Tab{20}{\S{}\3)\3\SE{}_+_\S{}\3}\Tab{29}{mc:_(\3\SE{}_+_}}
\L{\LB{}\Tab{20}{(\K{int})\V{imc}.\V{mm}.\V{mouseCoordsToMapCoords}(\V{e}.\V{getPoint}()).\V{getX}()+\S{}\3,\3\SE{}+}}
\L{\LB{}\Tab{20}{(\K{int})\V{imc}.\V{mm}.\V{mouseCoordsToMapCoords}(\V{e}.\V{getPoint}()).\V{getY}()_+_\S{}\3)\3\SE{}}}
\L{\LB{}\Tab{12}{);}}
\L{\LB{}\Tab{8}{\}}}
\index{mouseClicked}\Proc{mouseClicked}\L{\LB{}\Tab{8}{\K{public}_\K{void}_\V{mouseClicked}(\V{MouseEvent}_\V{e})_\{}}
\L{\LB{}\Tab{12}{\K{if}((\V{e}.\V{getButton}()==\N{1}_\|\,\|_\V{e}.\V{getButton}()==\N{3})_\&\&_\V{e}.\V{getClickCount}()==\N{2})_\{}}
\L{\LB{}\Tab{16}{\C{}//_Check_if_it_was_pressed_over_a_visible_node\CE{}}}
\L{\LB{}\Tab{16}{\C{}//_Loop_thru_nodes_and_verify_if_mouse_coords_are_within_boundaries_of_any_of_the_visible_sections.\CE{}}}
\L{\LB{}\Tab{16}{\C{}//System.out.println(\3Pressed_at:_\3_+_e.getPoint());\CE{}}}
\L{\LB{}\Tab{16}{}}
\L{\LB{}\Tab{16}{\C{}//_If_double-click_over_a_node,_edit_it\CE{}}}
\L{\LB{}\Tab{16}{\C{}//_If_no_node,_create_node_at_click_point\CE{}}}
\L{\LB{}\Tab{16}{\V{NodeItem}_\V{selNode}_=_\V{imc}.\V{nm}.\V{getNodeAtCoords}(\V{e}.\V{getPoint}());}}
\L{\LB{}\Tab{16}{\K{try}_\{}}
\L{\LB{}\Tab{20}{\C{}//System.out.println(\3Tapped_node:_\3_+_selNode.location());\CE{}}}
\L{\LB{}\Tab{20}{\V{selNode}.\V{select}();}}
\L{\LB{}\Tab{20}{\V{imc}.\V{repaint}();}}
\L{\LB{}\Tab{20}{\K{if}(\V{selNode}.\V{selected}())_\{}}
\L{\LB{}\Tab{24}{\V{NodeEditor}_\V{npm}_=_\K{new}_\V{NodeEditor}(\V{selNode},_\V{imc});}}
\L{\LB{}\Tab{20}{\}}}
\L{\LB{}\Tab{16}{\}_\K{catch}_(\V{java}.\V{lang}.\V{NullPointerException}_\V{error})_\{}}
\L{\LB{}\Tab{20}{\C{}//System.out.println(\3The_third_button_is_reserved_for_node_operations.\3);\CE{}}}
\L{\LB{}\Tab{20}{\C{}//_Create_node_at_specified_point.\CE{}}}
\L{\LB{}\Tab{20}{\C{}//_Point_needs_to_be_offset_from_the_current_window_coords_so_it{'}s_relative_to_map_instead\CE{}}}
\L{\LB{}\Tab{20}{\V{newNode}_=_\K{new}_\V{Point}(}}
\L{\LB{}\Tab{24}{(\K{int})(\V{imc}.\V{getCoordinates}().\V{getX}()_\-_\V{e}.\V{getPoint}().\V{getX}()),}}
\L{\LB{}\Tab{24}{(\K{int})(\V{imc}.\V{getCoordinates}().\V{getY}()_\-_\V{e}.\V{getPoint}().\V{getY}())}}
\L{\LB{}\Tab{20}{);}}
\L{\LB{}\Tab{20}{\V{setMessage}(\S{}\3Created_Node\3\SE{});}}
\L{\LB{}\Tab{20}{\V{imc}.\V{nm}.\V{addNode}(\V{newNode});}}
\L{\LB{}\Tab{16}{\}}}
\L{\LB{}\Tab{12}{\}}}
\L{\LB{}\Tab{8}{\}}}
\index{mousePressed}\Proc{mousePressed}\L{\LB{}\Tab{8}{\K{public}_\K{void}_\V{mousePressed}(\V{MouseEvent}_\V{e})_\{}}
\L{\LB{}\Tab{12}{\K{this}.\V{mouseClickPoint}_=_\V{e}.\V{getPoint}();}}
\L{\LB{}\Tab{12}{\K{if}(\V{e}.\V{getButton}()==\N{2})}}
\L{\LB{}\Tab{16}{\K{this}.\V{scrollDirection}_=_!\K{this}.\V{scrollDirection};}}
\L{\LB{}\Tab{8}{\}}}
\index{mouseDragged}\Proc{mouseDragged}\L{\LB{}\Tab{8}{\K{public}_\K{void}_\V{mouseDragged}(\V{MouseEvent}_\V{e})_\{}}
\L{\LB{}\Tab{12}{\K{this}.\V{mouseDragged}_=_\K{true};}}
\L{\LB{}\Tab{8}{\}}}
\index{mouseReleased}\Proc{mouseReleased}\L{\LB{}\Tab{8}{\K{public}_\K{void}_\V{mouseReleased}(\V{MouseEvent}_\V{e})_\{}}
\L{\LB{}\Tab{12}{\K{this}.\V{mouseReleasePoint}_=_\V{e}.\V{getPoint}();}}
\L{\LB{}\Tab{12}{\K{if}(\K{this}.\V{mouseDragged}_\&\&_!\K{this}.\V{mouseReleasePoint}.\V{equals}(\K{this}.\V{mouseClickPoint}))_\{}}
\L{\LB{}\Tab{16}{\C{}//_If_dragged_over_node,_create_edge\CE{}}}
\L{\LB{}\Tab{16}{\C{}//_If_dragged_over_nothing,_move_node\CE{}}}
\L{\LB{}\Tab{16}{\K{if}(\V{e}.\V{getButton}()==\N{1}_\|\,\|_\V{e}.\V{getButton}()==\N{3})_\{}}
\L{\LB{}\Tab{20}{\V{NodeItem}_\V{selNode}_=_\V{imc}.\V{nm}.\V{getNodeAtCoords}(\K{this}.\V{mouseClickPoint});}}
\L{\LB{}\Tab{20}{\V{NodeItem}_\V{relNode}_=_\V{imc}.\V{nm}.\V{getNodeAtCoords}(\K{this}.\V{mouseReleasePoint});}}
\L{\LB{}\Tab{20}{\V{EdgeItem}_\V{edge}_=_\K{null};}}
\L{\LB{}\Tab{20}{\K{try}_\{}}
\L{\LB{}\Tab{24}{\K{if}(\V{relNode}!=\K{null}_\&\&_!\V{imc}.\V{nm}.\V{connected}(\V{selNode},_\V{relNode}))_\{}}
\L{\LB{}\Tab{28}{\V{edge}_=_\K{new}_\V{EdgeItem}(\V{imc}.\V{map}(),_++\V{imc}.\V{edgeId});}}
\L{\LB{}\Tab{28}{\V{edge}.\V{setDistance}(\V{imc}.\V{calcDistance}(\V{selNode},\V{relNode}));}}
\L{\LB{}\Tab{28}{\V{selNode}.\V{addEdge}(\V{edge});}}
\L{\LB{}\Tab{28}{\V{relNode}.\V{addEdge}(\V{edge});}}
\L{\LB{}\Tab{28}{\V{setMessage}(\S{}\3Created_Edge_\3\SE{}_+_\V{edge}.\V{id}());}}
\L{\LB{}\Tab{24}{\}}}
\L{\LB{}\Tab{24}{\K{else}_\{_\C{}//_Move_node\CE{}}}
\L{\LB{}\Tab{28}{\V{selNode}.\V{setLocation}(\V{imc}.\V{mm}.\V{mouseCoordsToMapCoords}(\K{this}.\V{mouseReleasePoint}));}}
\L{\LB{}\Tab{28}{\V{NodeItem}_\V{otherNode}_=_\K{null};}}
\L{\LB{}\Tab{28}{\V{ListIterator}\<\V{NodeItem}\>_\V{i}_=_\V{imc}.\V{nm}.\V{connectedNodes}(\V{selNode}).\V{listIterator}();}}
\L{\LB{}\Tab{28}{\K{while}(\V{i}.\V{hasNext}())_\{}}
\L{\LB{}\Tab{32}{\V{otherNode}_=_\V{i}.\V{next}();}}
\L{\LB{}\Tab{32}{\V{edge}_=_\V{imc}.\V{nm}.\V{sharedEdge}(\V{otherNode},_\V{selNode});}}
\L{\LB{}\Tab{32}{\V{edge}.\V{setDistance}(\V{imc}.\V{calcDistance}(\V{otherNode},_\V{selNode}));}}
\L{\LB{}\Tab{28}{\}}}
\L{\LB{}\Tab{24}{\}}}
\L{\LB{}\Tab{24}{\V{imc}.\V{repaint}();}}
\L{\LB{}\Tab{20}{\}_\K{catch}_(\V{java}.\V{lang}.\V{NullPointerException}_\V{error})_\{}}
\L{\LB{}\Tab{24}{\C{}//_move_map_when_no_node_available\CE{}}}
\L{\LB{}\Tab{24}{\V{imc}.\V{mm}.\V{offsetByMouse}(\K{this}.\V{mouseClickPoint},_\K{this}.\V{mouseReleasePoint});}}
\L{\LB{}\Tab{24}{\V{sPanY}.\V{setValue}((\K{int})\V{imc}.\V{getCoordinates}().\V{getY}());}}
\L{\LB{}\Tab{24}{\V{sPanX}.\V{setValue}((\K{int})\V{imc}.\V{getCoordinates}().\V{getX}());}}
\L{\LB{}\Tab{20}{\}}}
\L{\LB{}\Tab{16}{\}}}
\L{\LB{}\Tab{16}{}}
\L{\LB{}\Tab{16}{\K{this}.\V{mouseDragged}=\K{false};}}
\L{\LB{}\Tab{12}{\}}}
\L{\LB{}\Tab{8}{\}}}
\index{mouseWheelMoved}\Proc{mouseWheelMoved}\L{\LB{}\Tab{8}{\K{public}_\K{void}_\V{mouseWheelMoved}(\V{MouseWheelEvent}_\V{e})_\{}}
\L{\LB{}\Tab{12}{\V{Point}_\V{newCoords}_=_\K{new}_\V{Point}();}}
\L{\LB{}\Tab{12}{\K{if}(\K{this}.\V{scrollDirection})_\{}}
\L{\LB{}\Tab{16}{\V{newCoords}.\V{setLocation}(_\V{imc}.\V{getCoordinates}().\V{getX}()\-(\V{e}.\V{getWheelRotation}()*\N{50}),_\V{imc}.\V{getCoordinates}().\V{getY}()_);}}
\L{\LB{}\Tab{16}{\V{sPanX}.\V{setValue}((\K{int})\V{newCoords}.\V{getX}());}}
\L{\LB{}\Tab{12}{\}}}
\L{\LB{}\Tab{12}{\K{else}_\{}}
\L{\LB{}\Tab{16}{\V{newCoords}.\V{setLocation}(_\V{imc}.\V{getCoordinates}().\V{getX}(),_\V{imc}.\V{getCoordinates}().\V{getY}()\-(\V{e}.\V{getWheelRotation}()*\N{50})_);}}
\L{\LB{}\Tab{16}{\V{sPanY}.\V{setValue}((\K{int})\V{newCoords}.\V{getY}());}}
\L{\LB{}\Tab{12}{\}}}
\L{\LB{}\Tab{12}{\V{imc}.\V{mm}.\V{setOrigin}(\V{newCoords});}}
\L{\LB{}\Tab{8}{\}}}
\L{\LB{}\Tab{4}{\}}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{\C{}/**}}
\L{\LB{}\Tab{5}{*_Listener_methods_for_button_actions}}
\L{\LB{}\Tab{5}{*/\CE{}}}
\L{\LB{}\Tab{4}{\K{private}_\K{class}_\V{ButtonMethods}_\K{implements}_\V{ActionListener}_\{}}
\index{actionPerformed}\Proc{actionPerformed}\L{\LB{}\Tab{8}{\K{public}_\K{void}_\V{actionPerformed}(\V{ActionEvent}_\V{e})_\{}}
\L{\LB{}\Tab{12}{\K{if}(\V{e}.\V{getSource}()_==_\V{bSave})_\{}}
\L{\LB{}\Tab{16}{\V{imc}.\V{nm}.\V{saveNodes}();}}
\L{\LB{}\Tab{16}{\V{setMessage}(\S{}\3Saved\3\SE{});}}
\L{\LB{}\Tab{12}{\}}}
\L{\LB{}\Tab{12}{\K{if}(\V{e}.\V{getSource}()_==_\V{bLoad})_\{}}
\L{\LB{}\Tab{16}{\V{imc}.\V{nm}.\V{loadNodes}();}}
\L{\LB{}\Tab{16}{\V{imc}.\V{repaint}();}}
\L{\LB{}\Tab{16}{\V{setMessage}(\S{}\3Loaded\3\SE{});}}
\L{\LB{}\Tab{12}{\}}}
\L{\LB{}\Tab{8}{\}}}
\L{\LB{}\Tab{4}{\}}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{\C{}/**}}
\L{\LB{}\Tab{5}{*_Listener_methods_for_slider_actions}}
\L{\LB{}\Tab{5}{*/\CE{}}}
\L{\LB{}\Tab{4}{\K{private}_\K{class}_\V{SliderMethods}_\K{implements}_\V{ChangeListener}_\{}}
\index{stateChanged}\Proc{stateChanged}\L{\LB{}\Tab{8}{\K{public}_\K{void}_\V{stateChanged}(\V{ChangeEvent}_\V{e})_\{}}
\L{\LB{}\Tab{12}{\V{JSlider}_\V{s}_=_(\V{JSlider})\V{e}.\V{getSource}();}}
\L{\LB{}\Tab{12}{\V{Point}_\V{newCoords}_=_\K{new}_\V{Point}();}}
\L{\LB{}\Tab{12}{\K{if}(!\V{s}.\V{getValueIsAdjusting}())_\{}}
\L{\LB{}\Tab{16}{\K{if}(\V{e}.\V{getSource}()==\V{sPanY})}}
\L{\LB{}\Tab{20}{\V{newCoords}.\V{setLocation}(_\V{imc}.\V{getCoordinates}().\V{getX}(),_\V{s}.\V{getValue}()_);}}
\L{\LB{}\Tab{16}{\K{else}_\K{if}(\V{e}.\V{getSource}()==\V{sPanX})}}
\L{\LB{}\Tab{20}{\V{newCoords}.\V{setLocation}(_\V{s}.\V{getValue}(),_\V{imc}.\V{getCoordinates}().\V{getY}()_);}}
\L{\LB{}\Tab{16}{\V{imc}.\V{mm}.\V{setOrigin}(\V{newCoords});}}
\L{\LB{}\Tab{12}{\}}}
\L{\LB{}\Tab{8}{\}}}
\L{\LB{}\Tab{4}{\}}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{}}
\index{setMessage}\Proc{setMessage}\L{\LB{}\Tab{4}{\K{public}_\K{void}_\V{setMessage}(\V{String}_\V{m})_\{}}
\L{\LB{}\Tab{8}{\V{message}.\V{setText}(\V{m});}}
\L{\LB{}\Tab{4}{\}}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{}}
\index{getAppletInfo}\Proc{getAppletInfo}\L{\LB{}\Tab{4}{\K{public}_\V{String}_\V{getAppletInfo}()_\{}}
\L{\LB{}\Tab{8}{\K{return}_\S{}\3(c)_Ian_Melnick,_Union_College_2005\-2006\3\SE{};}}
\L{\LB{}\Tab{4}{\}}}
\index{getParameterInfo}\Proc{getParameterInfo}\L{\LB{}\Tab{4}{\K{public}_\V{String}[\,][\,]_\V{getParameterInfo}()_\{}}
\L{\LB{}\Tab{8}{\V{String}_\V{pinfo}[\,][\,]_=_\{}}
\L{\LB{}\Tab{12}{\{\S{}\3m\3\SE{},\S{}\3String\3\SE{},\S{}\3Map_file_to_load_(specify_location/floor_only,_i.e.,_map\_scieneg\_000.jpg_is_loaded_with_arg_scieng\_000)\3\SE{}\}}}
\L{\LB{}\Tab{12}{\C{}/*\{\3w\3,\3Integer\3,\3Width_of_map_window_(px)\3\},}}
\L{\LB{}\Tab{12}{\{\3h\3,\3Integer\3,\3Height_of_map_window_(px)\3\}*/\CE{}}}
\L{\LB{}\Tab{8}{\};}}
\L{\LB{}\Tab{8}{\K{return}_\V{pinfo};}}
\L{\LB{}\Tab{4}{\}}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{}}
\L{\LB{}\Tab{4}{}}
\index{init}\Proc{init}\L{\LB{}\Tab{4}{\K{public}_\K{void}_\V{init}()_\{}}
\L{\LB{}\Tab{8}{\V{MouseMethods}_\V{mm}}\Tab{25}{=_\K{new}_\V{MouseMethods}();}}
\L{\LB{}\Tab{8}{\V{ButtonMethods}_\V{bm}_=_\K{new}_\V{ButtonMethods}();}}
\L{\LB{}\Tab{8}{\V{SliderMethods}_\V{sm}_=_\K{new}_\V{SliderMethods}();}}
\L{\LB{}\Tab{8}{}}
\L{\LB{}\Tab{8}{\V{bLoad}.\V{addActionListener}(\V{bm});}}
\L{\LB{}\Tab{8}{\V{bSave}.\V{addActionListener}(\V{bm});}}
\L{\LB{}\Tab{8}{\V{sPanX}.\V{addChangeListener}(\V{sm});}}
\L{\LB{}\Tab{8}{\V{sPanY}.\V{addChangeListener}(\V{sm});}}
\L{\LB{}\Tab{8}{\V{imc}.\V{addMouseListener}(\V{mm});}}
\L{\LB{}\Tab{8}{\V{imc}.\V{addMouseMotionListener}(\V{mm});}}
\L{\LB{}\Tab{8}{\V{imc}.\V{addMouseWheelListener}(\V{mm});}}
\L{\LB{}\Tab{8}{}}
\L{\LB{}\Tab{8}{\V{bottomL}.\V{add}(\V{bLoad});}}
\L{\LB{}\Tab{8}{\V{bottomL}.\V{add}(\V{bSave});}}
\L{\LB{}\Tab{8}{\V{bottomC}.\V{add}(\V{status});}}
\L{\LB{}\Tab{8}{\V{bottomR}.\V{add}(\V{message});}}
\L{\LB{}\Tab{8}{\V{bottom}.\V{add}(\V{bottomL});}}
\L{\LB{}\Tab{8}{\V{bottom}.\V{add}(\V{bottomC});}}
\L{\LB{}\Tab{8}{\V{bottom}.\V{add}(\V{bottomR});}}
\L{\LB{}\Tab{8}{}}
\L{\LB{}\Tab{8}{\V{Container}_\V{cp}_=_\V{getContentPane}();}}
\L{\LB{}\Tab{8}{\V{cp}.\V{setLayout}(\K{new}_\V{BorderLayout}());}}
\L{\LB{}\Tab{8}{\V{cp}.\V{add}(\V{sPanX},_\V{BorderLayout}.\V{NORTH});}}
\L{\LB{}\Tab{8}{\V{cp}.\V{add}(\V{sPanY},_\V{BorderLayout}.\V{WEST});}}
\L{\LB{}\Tab{8}{\V{cp}.\V{add}(\V{bottom},_\V{BorderLayout}.\V{SOUTH});}}
\L{\LB{}\Tab{8}{\V{cp}.\V{add}(\V{imc});}}
\L{\LB{}\Tab{8}{}}
\L{\LB{}\Tab{8}{\C{}//System.out.println(this.getSize());\CE{}}}
\L{\LB{}\Tab{4}{\}}}
\L{\LB{}\Tab{4}{}}
\L{\LB{\}}}
